package com.lh.pospi.x_store.utils;

import android.content.Context;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.itheima.retrofitutils.ItheimaHttp;
import com.itheima.retrofitutils.Request;
import com.itheima.retrofitutils.listener.HttpResponseListener;
import com.lany.sp.SPHelper;
import com.lh.pospi.x_store.Interface.StatusListener;
import com.lh.pospi.x_store.app.MyApp;
import com.lh.pospi.x_store.modle.BillBean;
import com.lh.pospi.x_store.modle.GoodsBean;
import com.lh.pospi.x_store.modle.ResultBean;
import com.lh.pospi.x_store.modle.TypeBean;
import com.lh.pospi.x_store.net.NetHelper;
import com.vondear.rxtool.RxDataTool;
import com.vondear.rxtool.RxLogTool;
import com.vondear.rxtool.RxSPTool;
import com.vondear.rxtool.RxTimeTool;
import com.vondear.rxtool.view.RxToast;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
import retrofit2.Call;

public class BillUtil {
    public static void savebill(Context context, String date, String markt, String sup, String memo, List<GoodsBean> beans, String type,String marketname,String supnaem, StatusListener listener) {


        try {
            String detail = new Gson().toJson(beans);
            RxLogTool.d(detail);
            BillBean bean = new BillBean();
            bean.setBillno(type+RxTimeTool.getCurrentDateTime("MMddHHmmss"));
            bean.setType(type);
            bean.setBillrq(date);
            bean.setMarket(markt);
            bean.setSup(sup);
            bean.setMemo(memo);
            bean.setSupname(supnaem);
            bean.setMarketname(marketname);

            bean.setStatus("0");//0未上传 1已上传
            bean.setOptdt(MyApp.getInstance().getmUserBean().getCode());
            bean.setOptname(MyApp.getInstance().getmUserBean().getName());
            bean.setBilldetail(detail);
            bean.setDbname(SPHelper.getInstance().getString(Constant.DB_NAME));
            MyApp.getInstance().getDaoSession().getBillBeanDao().insert(bean);
            RxLogTool.w(bean.toString());
            listener.saveSuccess(bean);
        } catch (Exception e) {
            e.printStackTrace();
            listener.upFailed("保存失败");
        }

    }
    public static void updatebill(Context context, String date, String markt,
                                  String sup, String memo, String marketname,
                                  String supnaem,List<GoodsBean> beans,BillBean bill ,StatusListener listener) {
        String detail = new Gson().toJson(beans);
        bill.setBillrq(date);
        bill.setMarket(markt);
        bill.setMarketname(marketname);
        bill.setSup(sup);
        bill.setSupname(supnaem);
        bill.setBilldetail(detail);
        bill.setMemo(memo);
        try {
            MyApp.getInstance().getDaoSession().getBillBeanDao().update(bill);
            listener.upSuccess("更新成功");
        } catch (Exception e) {
            e.printStackTrace();
            listener.upFailed("更新失败");
        }

    }

    public static void upbill(final BillBean bean, final StatusListener listener) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                DBService.getDbService().upBill(bean,listener);
            }
        }).start();

//        List<GoodsBean> goodsBeans = new Gson().fromJson(bean.getBilldetail(), new TypeToken<List<GoodsBean>>() {
//        }.getType());
//
//        JsonObject head = new JsonObject();
//        head.addProperty("billno", bean.getBillno());
//        head.addProperty("type", bean.getType());
//        head.addProperty("market", bean.getMarket());
//        head.addProperty("billrq", bean.getBillrq());
//        head.addProperty("memo", bean.getMemo());
//        head.addProperty("person1", "");
//        head.addProperty("person2", "");
//        head.addProperty("sup", bean.getSup());
//        head.addProperty("outmarket", bean.getSup());
//        head.addProperty("inmarket", bean.getMarket());
//
//        JsonArray array = new JsonArray();
//        for (GoodsBean goodsBean : goodsBeans) {
//            JsonObject d = new JsonObject();
//            d.addProperty("code", goodsBean.getCode());
//            d.addProperty("barcode", goodsBean.getBarcode());
//            d.addProperty("sl", goodsBean.getNum());
//            d.addProperty("dj", goodsBean.getJj());
//
//            d.addProperty("unit", goodsBean.getUnit());
//            d.addProperty("junit", goodsBean.getJunit());
//            d.addProperty("jhl", goodsBean.getJhl());
//            d.addProperty("memo", "");
//            array.add(d);
//        }
//        Map<String, Object> map = new HashMap<>();
//        map.put("dbname", SPHelper.getInstance().getString(Constant.DB_NAME));
//        map.put("head",  head.toString());
//        map.put("detail", array.toString());
//        NetHelper.request().upBill(map).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<ResultBean>() {
//            @Override
//            public void onSubscribe(Disposable d) {
//
//            }
//
//            @Override
//            public void onNext(ResultBean resultBean) {
//                if (resultBean == null) {
//                    listener.upFailed("json解析错误");
//                    return;
//                }
//                if (resultBean.getFlag() == 1) {
//                    bean.setStatus("1");
//                    MyApp.getInstance().getDaoSession().getBillBeanDao().update(bean);
//                    listener.upSuccess(resultBean.getErrMsg());
//                } else {
//                    listener.upFailed(resultBean.getErrMsg());
//                }
//            }
//
//            @Override
//            public void onError(Throwable e) {
//
//            }
//
//            @Override
//            public void onComplete() {
//
//            }
//        });
    }
    public static void deleteBill(TypeBean bean,String stutas) {
        List<BillBean> billBeans = DaoHelper.getBillsNoTime(bean.getType(), stutas);
        MyApp.getInstance().getDaoSession().getBillBeanDao().deleteInTx(billBeans);
    }

}
